package com.weichen.studentgameexchange.game.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.weichen.studentgameexchange.common.common.Result;
import com.weichen.studentgameexchange.game.entity.GameVersion;
import com.weichen.studentgameexchange.game.entity.vo.VersionVo;
import com.weichen.studentgameexchange.game.service.IGameVersionService;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * TODO 管理员-游戏--游戏版本管理
 */
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 惟尘
 * @since 2025-02-01
 */
@RestController
@RequestMapping("/game/gameVersion")
public class GameVersionController {

    @Autowired
    IGameVersionService gameVersionService;

    /**
     * 管理员添加游戏版本
     * @param versionVo
     * @return
     */
    @Operation(summary = "管理员添加游戏版本接口")
    @PostMapping("/admin/add")
    public Result adminAdd(@RequestBody VersionVo versionVo){
        return gameVersionService.adminAdd(versionVo);
    }

    /**
     * 管理员分页查询游戏版本信息
     * @param keyword
     * @param page
     * @param size
     * @return
     */
    @Operation(summary = "管理员分页查询游戏版本信息接口")
    @GetMapping("/admin/page")
    public Result adminPage(@RequestParam("keyword") String keyword,
                            @RequestParam(value = "page",defaultValue = "1") Integer page,
                            @RequestParam(value = "size",defaultValue = "5") Integer size){
        return gameVersionService.adminPage(keyword, page, size);
    }

    /**
     * 管理员查看单个游戏版本信息
     * @param versionId
     * @return
     */
    @Operation(summary = "管理员查看单个游戏版本信息接口")
    @GetMapping("/admin/selectOne/{versionId}")
    public Result adminSelectOne(@PathVariable("versionId") Long versionId){
        return gameVersionService.adminSelectOne(versionId);
    }

    /**
     * 管理员修改游戏版本信息
     * @param gameVersion
     * @return
     */
    @Operation(summary = "管理员修改游戏版本信息接口")
    @PutMapping("/admin/update")
    public Result adminUpdate(@RequestBody GameVersion gameVersion){
        gameVersionService.updateById(gameVersion);
        return Result.success();
    }

    /**
     * 管理员删除单个游戏版本
     * @param versionId
     * @return
     */
    @Operation(summary = "管理员删除单个游戏版本接口")
    @DeleteMapping("/admin/delete/{versionId}")
    public Result adminDeleteOne(@PathVariable("versionId") Long versionId){
        gameVersionService.removeById(versionId);
        return Result.success();
    }

    /**
     * 管理员批量删除游戏版本
     * @param versionIds
     * @return
     */
    @Operation(summary = "管理员批量删除游戏版本接口")
    @DeleteMapping("/admin/delete/batch")
    public Result adminDeleteBatch(@RequestBody List<Long> versionIds){
        gameVersionService.removeBatchByIds(versionIds);
        return Result.success();
    }

    /**
     * 管理员查看所有游戏版本信息
     * @param versionId
     * @return
     */
    @Operation(summary = "管理员查看所有游戏版本信息接口")
    @GetMapping("/admin/selectAll/{versionId}")
    public Result adminSelectAll(@PathVariable("versionId") Long versionId){
        List<GameVersion> gameVersions = gameVersionService.adminSelectAll(versionId);
        return Result.success(gameVersions);
    }
}
